home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModelessRadios.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  6.1 KB  |  210 lines  |  [TEXT/CWIE]

  1. /* ModelessRadios.c -- modeless dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModelessRadios.h"
  20.  
  21. #define kRadioGroupGroup        1
  22. #define kStandardRadio        2
  23. #define kGroupBox        3
  24. #define kGroupGroup        4
  25. #define kGroupRadio1        5
  26. #define kGroupRadio2        6
  27. #define kGroupRadio3        7
  28. #define kGraphicBox        8
  29. #define kGraphicGroup        9
  30. #define kStopRadio        10
  31. #define kGoRadio        11
  32. #define kBevelBox        12
  33. #define kBevelGroup        13
  34. #define kRadioButtonRadio        14
  35. #define kRadioButton2Radio        15
  36. #define kTextBox        16
  37. #define kTextGroup        17
  38. #define kNameRadio        18
  39. #define kKindRadio        19
  40. #define kSizeRadio        20
  41.  
  42.  
  43. //----------
  44. DialogPtr        ModelessRadiosDialog = nil;
  45.  
  46. //----------
  47. void    ModelessRadios_Create ()
  48. {
  49.     ModelessRadios*            dialog = NewModelessRadios ();
  50.     DModelessRadiosData*        data = NewDModelessRadiosData ();
  51.  
  52.     AMDialog_MakeDialog ((AMDialog*)dialog, DLOG_ModelessRadios);
  53.     ModelessRadios_ConnectToData (dialog, (AMSignaler*)data);
  54. }
  55.  
  56. //----------
  57. void    ModelessRadios_Show ()
  58. {
  59.     if (ModelessRadiosDialog == nil) {
  60.         ModelessRadios_Create ();
  61.     }
  62.     if (ModelessRadiosDialog != nil) {
  63.         SelectWindow (ModelessRadiosDialog);
  64.         ShowWindow (ModelessRadiosDialog);
  65.     }
  66. }
  67.  
  68. //----------
  69. void    ModelessRadios_Close ()
  70. {
  71.     HideWindow (ModelessRadiosDialog);
  72. }
  73.  
  74. //----------
  75. ModelessRadios*        NewModelessRadios ()
  76. {
  77.     ModelessRadios*        dialog;
  78.  
  79.     dialog = (ModelessRadios*)malloc (sizeof (ModelessRadios));
  80.     ModelessRadios_Init (dialog);
  81.     SetClassID (dialog, classModelessRadios);
  82.  
  83.     return dialog;
  84. }
  85.  
  86. //----------
  87. void    DeleteModelessRadios (
  88.     ModelessRadios*        dialog)
  89. {
  90.     ModelessRadios_Free (dialog);
  91.     free (dialog);
  92. }
  93.  
  94. //----------
  95. void    ModelessRadios_Init (
  96.     ModelessRadios*        self)
  97. {
  98.     AMDialog_Init ((AMDialog*)self);
  99. }
  100.  
  101. //----------
  102. void    ModelessRadios_Free (
  103.     ModelessRadios*        self)
  104. {
  105.     AMDialog_Free ((AMDialog*)self);
  106. }
  107.  
  108. //----------
  109. void    ModelessRadios_FinishMake (
  110.     ModelessRadios*        self)
  111. {
  112.     ModelessRadiosDialog = ((AMDialog*)self)->mDialog;
  113.  
  114.     self->mRadioGroupGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kRadioGroupGroup);
  115.     self->mStandardHandle = AMDialog_GetControlItem ((AMDialog*)self, kStandardRadio);
  116.     self->mGroupBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kGroupBox);
  117.     self->mGroupGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kGroupGroup);
  118.     self->mGroupRadio1Handle = AMDialog_GetControlItem ((AMDialog*)self, kGroupRadio1);
  119.     self->mGroupRadio2Handle = AMDialog_GetControlItem ((AMDialog*)self, kGroupRadio2);
  120.     self->mGroupRadio3Handle = AMDialog_GetControlItem ((AMDialog*)self, kGroupRadio3);
  121.     self->mGraphicBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicBox);
  122.     self->mGraphicGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kGraphicGroup);
  123.     self->mStopHandle = AMDialog_GetControlItem ((AMDialog*)self, kStopRadio);
  124.     self->mGoHandle = AMDialog_GetControlItem ((AMDialog*)self, kGoRadio);
  125.     self->mBevelBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelBox);
  126.     self->mBevelGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kBevelGroup);
  127.     self->mRadioButtonHandle = AMDialog_GetControlItem ((AMDialog*)self, kRadioButtonRadio);
  128.     SetBevelButtonGraphicAlignment (self->mRadioButtonHandle, kControlBevelButtonAlignCenter, 0, 0);
  129.     self->mRadioButton2Handle = AMDialog_GetControlItem ((AMDialog*)self, kRadioButton2Radio);
  130.     SetBevelButtonGraphicAlignment (self->mRadioButton2Handle, kControlBevelButtonAlignCenter, 0, 0);
  131.     self->mTextBoxHandle = AMDialog_GetControlItem ((AMDialog*)self, kTextBox);
  132.     self->mTextGroupHandle = AMDialog_GetControlItem ((AMDialog*)self, kTextGroup);
  133.     self->mNameHandle = AMDialog_GetControlItem ((AMDialog*)self, kNameRadio);
  134.     self->mKindHandle = AMDialog_GetControlItem ((AMDialog*)self, kKindRadio);
  135.     self->mSizeHandle = AMDialog_GetControlItem ((AMDialog*)self, kSizeRadio);
  136. }
  137.  
  138. //----------
  139. void    ModelessRadios_ConnectToData (
  140.     ModelessRadios*        self,
  141.     AMSignaler*        inData)
  142. {
  143.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  144.     self->mData = (DModelessRadiosData*) inData;
  145.  
  146.     SetControlValue (self->mRadioGroupGroupHandle, GetRadioGroup3 (self->mData));
  147.     SetControlValue (self->mGroupGroupHandle, GetGroup3 (self->mData));
  148.     SetControlValue (self->mGraphicGroupHandle, GetGraphic5 (self->mData));
  149.     SetControlValue (self->mBevelGroupHandle, GetBevel3 (self->mData));
  150.     SetBevelButtonGraphicAlignment (self->mRadioButtonHandle, kControlBevelButtonAlignCenter, 0, 0);
  151.     SetBevelButtonGraphicAlignment (self->mRadioButton2Handle, kControlBevelButtonAlignCenter, 0, 0);
  152.     SetControlValue (self->mTextGroupHandle, GetText3 (self->mData));
  153. }
  154.  
  155. //----------
  156. void    ModelessRadios_DoItem (
  157.     ModelessRadios*        self,
  158.     SInt16        inItemHit)
  159. {
  160.     switch (inItemHit) {
  161.     case kRadioGroupGroup:
  162.             SetRadioGroup3 (self->mData, GetControlValue (self->mRadioGroupGroupHandle));
  163.         break;
  164.     case kGroupGroup:
  165.             SetGroup3 (self->mData, GetControlValue (self->mGroupGroupHandle));
  166.         break;
  167.     case kGraphicGroup:
  168.             SetGraphic5 (self->mData, GetControlValue (self->mGraphicGroupHandle));
  169.         break;
  170.     case kBevelGroup:
  171.             SetBevel3 (self->mData, GetControlValue (self->mBevelGroupHandle));
  172.         break;
  173.     case kTextGroup:
  174.             SetText3 (self->mData, GetControlValue (self->mTextGroupHandle));
  175.         break;
  176.  
  177.     } // switch
  178. }
  179.  
  180. //----------
  181. void    ModelessRadios_DataChanged (
  182.     ModelessRadios*        self,
  183.     long        inDataID)
  184. {
  185.     if (inDataID == idRadioGroup3) {
  186.         SetControlValue (self->mRadioGroupGroupHandle, GetRadioGroup3 (self->mData));
  187.     }
  188.     if (inDataID == idGroup3) {
  189.         SetControlValue (self->mGroupGroupHandle, GetGroup3 (self->mData));
  190.     }
  191.     if (inDataID == idGraphic5) {
  192.         SetControlValue (self->mGraphicGroupHandle, GetGraphic5 (self->mData));
  193.     }
  194.     if (inDataID == idBevel3) {
  195.         SetControlValue (self->mBevelGroupHandle, GetBevel3 (self->mData));
  196.     }
  197.     if (inDataID == idText3) {
  198.         SetControlValue (self->mTextGroupHandle, GetText3 (self->mData));
  199.     }
  200. }
  201.  
  202. //----------
  203. Boolean        ModelessRadios_Filter (
  204.     ModelessRadios*            self,
  205.     EventRecord            *ioEvent,
  206.     DialogItemIndex        *outItemHit)
  207. {
  208.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  209. }
  210.